package cn.com.hhrcw.validator.resume.util;

import cn.com.hhrcw.entity.CvResume;
import cn.com.hhrcw.entity.PiInfo;
import cn.com.hhrcw.service.IPiInfoService;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 简历输入验证-个性信息（太多了，专门分离开）
 *
 * @author leeson
 */
@Slf4j
@Component
public class ResumePiInfoRequiredValidationUtil {

    public static final String SEPARATOR = "、";

    @Autowired
    private IPiInfoService piInfoService;

    /**
     * 发现错误是否立即中断
     *
     * @param resume
     * @return
     */
    public Result isValid(CvResume resume) {

        //与校招简历相比，社招没有：
        // 是否与其他单位签订三方协议 getTripartiteAgreement、外语foreignLanguage、计算机水平getComputerSkill
        StringBuilder sb = new StringBuilder();

        PiInfo piInfo = piInfoService.lambdaQuery()
            .eq(PiInfo::getUserId, resume.getUserId())
            .eq(PiInfo::getDelFlag, 0)
            .one();

        if (StringUtils.isBlank(piInfo.getName())) {
            sb.append("姓名").append(SEPARATOR);
        }
        if (null == piInfo.getSex()) {
            sb.append("性别").append(SEPARATOR);
        }
        if (null == piInfo.getBirthday()) {
            sb.append("出生年月").append(SEPARATOR);
        }

        if (piInfo.getIdEntity() == null) {
            sb.append("请选择求职身份").append(SEPARATOR);

        }

        //???参加工作时间

        if (null != piInfo.getJobFlag() && 1 == piInfo.getJobFlag() && null == piInfo.getJobTime()) {
            sb.append("请选择参加工作时间").append(SEPARATOR);
        }
        if (null == piInfo.getMaritalStatus()) {
            sb.append("婚姻状态").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getR6())) {
            sb.append("身份证号").append(SEPARATOR);
        }

        //校招简历
        boolean isSchool = 2 == resume.getResumeType();
        if (isSchool && StringUtils.isBlank(resume.getTripartiteAgreement())) {
            sb.append("是否与其他单位签订三方协议").append(SEPARATOR);
        }
        if (1 == resume.getResumeType() && StringUtils.isBlank(piInfo.getR5())) {
            sb.append("驾驶证").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getR3())) {
            sb.append("身高").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getR4())) {
            sb.append("体重").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getR2())) {
            sb.append("民族").append(SEPARATOR);
        }

        //政治面貌
        if (StringUtils.isBlank(piInfo.getPolitical())) {
            sb.append("政治面貌").append(SEPARATOR);
        }
        boolean political = StrUtil.contains("中共党员|中共预备党员|", piInfo.getPolitical());
        if (political && null == piInfo.getPartyTime()) {
            String msg = "入党时间";
            sb.append(msg).append(SEPARATOR);
        }

        //校招简历

        if (StringUtils.isBlank(piInfo.getForeignLanguage())) {
            sb.append("外语水平").append(SEPARATOR);
        }

        //校招简历
        if (isSchool && StringUtils.isBlank(piInfo.getComputerSkill())) {
            sb.append("计算机水平").append(SEPARATOR);
        }

        if (StringUtils.isBlank(piInfo.getHomeTown())) {
            sb.append("户口所在地").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getLiveCity())) {
            sb.append("现居住城市").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getAddress())) {
            sb.append("详细地址").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getEmail())) {
            sb.append("电子邮箱").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getR7())) {
            sb.append("紧急联系人").append(SEPARATOR);
        }
        if (StringUtils.isBlank(piInfo.getR8())) {
            sb.append("联系电话").append(SEPARATOR);
        }

        //

        if (StringUtils.isBlank(sb.toString())) {
            return Result.ok("");
        } else {
            String msg = "请完善基本信息:" + sb.substring(0, sb.toString().length() - 1);
            return Result.error(msg);
        }

    }
}
